var express = require('express');
var router = express.Router();

var { getDecrypt } = require('../utils')
var { Mvs } = require('../utils/module')

var moment = require('moment');//引入下载好的时间插件

// get get  请求
// /  路由地址 
//  req 请求信息
//  res 响应信息 
// next 下一个中间键 
//  res.render 渲染模板 




/* GET home page. */
router.get('/', function (req, res, next) {
  res.render('index', { title: 'Express' });
});


// router.get('/demo',function(req,res){
//   res.send('demodeom')
// })



router.get('/htmlEjs/index1', function (req, res) {
  res.render('htmlEjs/index1', {
    title: '电影评论管理系统',
    username: req.session.username,
    logintime: moment(req.session.logintime).format('llll')
  })
})


//登录路由
router.get('/htmlEjs/login', function (req, res) {
  var username = req.query.username ? getDecrypt(req.query.username) : '';
  res.render('htmlEjs/login', { username })
})



// 注册路由
router.get('/htmlEjs/register', function (req, res) {
  res.render('htmlEjs/register')
})



// 退出登录
router.get("/htmlEjs/logout", (req, res) => {
  req.session.destroy(() => {
    res.redirect("/htmlEjs/index1")
  })
})

//修改密码
router.get('/htmlEjs/changepass', (req, res) => {
  // res.send('修改密码')
  // 因为session保存用户信息有时间限制，所以要判断session存在吗
  if (req.session.username) {
    res.render('htmlEjs/changepass', {
      username: req.session.username
    })
  } else {
    res.send("<script>alert('Session已经过期无效,请重新登录');location.href='/htmlEjs/login'</script>")
  }
})




//电影列表
router.get('/htmlEjs/movie', (req, res) => {
  // res.send('电影列表')
  // res.render('htmlEjs/movie')

  //进入到电影列表界面后，判断用户是否登录
  if (req.session.username) {
    //前端通过点击按钮吧数据放在地址栏上，所以我只需要获得地址栏的数据来做
    var query = req.query;

    var sortobj = {
      _id: -1
    }

    // sortobj = { ...query, ...sortobj };//对象合并
    //搜索功能
    // 获得用户输入框里的值，点击搜索按钮后把输入框里的值放到地址栏中，然后后端获得地址栏的值，但这样query的值会影响到排序，所以要把排序功能和搜索功能分开，互不影响，所以要判断地址栏的信息是否符合
    var  keyword  = query.keyword;
    var obj = {};
    if (keyword) {
      obj = {
        $or: [
          { title: new RegExp(keyword) },
          { year: new RegExp(keyword) },
          { genres: new RegExp(keyword) },
          { 'rating.average': new RegExp(keyword) },
          { 'directors.name': new RegExp(keyword) },
        ]
      }
    } else {
      sortobj = { ...query, ...sortobj };//对象合并
    }


    Mvs.find(obj, { _id: 0 })
    .sort(sortobj)
    .then(result => {
      console.log(result);
      res.render("htmlEjs/movie", {
        result,
        username: req.session.username
      })
    })
  } else {
    res.send("<script>alert('Session已经过期无效,请重新登录');location.href='/htmlEjs/login'</script>")
  }

})
































router.get('/login', function (req, res) {//解析get方式的请求数据
  res.render('login');//渲染login页面
})





router.get('/api/url', function (req, res) {
  res.json({//响应json格式的数据
    msg: '查询成功',
    code: 200,
    pathname: req.path,
    query: req.query,
    path: req.url,
    // href:req.href//不存在
    headers: req.headers,//请求头
    hostname: req.host,//域名
    // port:res.port//不存在
    // search:req.search//不存在
  })
})


//凡是：冒号声明的参数只能通过params来取，？问号表明这个参数可以传可以不传
router.get('/api/del/:uid?', function (req, res) {
  res.json({
    code: 200,
    msg: '删除成功',
    params: req.params,
    query: req.query,

  })
});



router.all('/api/all', function (req, res) {
  res.send('这个方法既可以接受任意方式提交的参数数据')
})





module.exports = router;
